/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package stories;

import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import static junit.framework.Assert.*;
import ventasautomotrices.AdminConexion;
import ventasautomotrices.Empleado;
import ventasautomotrices.Interfaz;

/**
 *
 * @author granyatee
 */
public class CerrarSesionStepDef {
	AdminConexion ac = new AdminConexion();
	Interfaz in = new Interfaz();
	int idRegistroAnt = -1;
	

	@Given("^un vendedor con codigo (\\d+) con sesion iniciada$")
	public void un_vendedor_con_codigo_con_sesion_iniciada(int idVendedor) throws Throwable {
		ac.abrirConexionBDD();
        PreparedStatement ps = ac.prepararConsulta("SELECT idVendedor, Nombre, Apellido FROM AutoVentas.Empleado WHERE idVendedor = ?");
        ps.setInt(1, idVendedor);
        ResultSet rs = ps.executeQuery();
        if( !rs.next() ){
            fail("No Existe el vendedor codigo " + idVendedor);
        }
		
		ac.cerrarConexionBDD();
		in.setEmp( new Empleado( idVendedor) );
		assertNotNull(in.getEmp());
		assertEquals(idVendedor, in.getEmp().getIdEmpleado());
	}

	@When("^elige cerrar sesion$")
	public void elige_cerrar_sesion() throws Throwable {
		ac.abrirConexionBDD();
		PreparedStatement ps = ac.prepararConsulta("SELECT MAX(idRegistroLogin) FROM AutoVentas.RegistroLogin");
		System.out.println(ps.toString());
		ResultSet rs = ps.executeQuery();
		if( rs.next() ){
			idRegistroAnt = rs.getInt(1);
		}
		System.out.println("Anterior:  " + idRegistroAnt);
		ac.cerrarConexionBDD();
		
		in.cerrarSesion();
	}

	@Then("^el sistema debe registrar la salida del vendedor codigo (\\d+) en la BD$")
	public void el_sistema_debe_registrar_la_salida_del_vendedor_codigo_en_la_BD(int idVendedor) throws Throwable {
		ac.abrirConexionBDD();
		PreparedStatement ps = ac.prepararConsulta("SELECT idRegistroLogin, idVendedor, fechaLogin, EntradaSalida FROM AutoVentas.RegistroLogin WHERE idRegistroLogin=(SELECT MAX(idRegistroLogin) FROM AutoVentas.RegistroLogin)");
		System.out.println(ps.toString());
		ResultSet rs = ps.executeQuery();
		int idv = -2;
		int idr = -3;
		String ensa = "";
		if( rs.next() ){
			idr = rs.getInt(1);
			idv = rs.getInt(2);
			ensa = rs.getString(4);
		}
		System.out.println("Nuevo:     " + idr);
		ac.cerrarConexionBDD();
		
		assertEquals(idVendedor, idv);
		assertEquals(idRegistroAnt+1, idr);
		assertEquals("S", ensa);
	}

	@Then("^la aplicacion debe ocultar los menus$")
	public void la_aplicacion_debe_ocultar_los_menus() throws Throwable {
		assertFalse(in.getMnuAutos().isVisible());
		assertFalse(in.getMnuCerrarSesion().isVisible());
		assertFalse(in.getMnuEmpleados().isVisible());
		
		assertFalse(in.getMnuReportes().isVisible());
		assertFalse(in.getMnuVentas().isVisible());
		assertTrue(in.getPnlLogin().isVisible());
	}

	@Then("^la aplicacion debe mostrar los campos para iniciar sesion$")
	public void la_aplicacion_debe_mostrar_los_campos_para_iniciar_sesion() throws Throwable {
		assertTrue(in.getPnlLogin().isVisible());
		//ac.cerrarConexionBDD();
	}

}
